package com.zff.rental.entity.apartment;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zff.rental.AppConstant;
import jakarta.persistence.*;
import lombok.Data;
import org.hibernate.annotations.Comment;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;


/**
 * 公寓
 *
 * @author HCY
 */
@Data
@Entity
@DynamicInsert()
@DynamicUpdate()
@Table(name = AppConstant.TABLE_NAME_APARTMENT)
@TableName(AppConstant.TABLE_NAME_APARTMENT)
public class ApartmentEntity {
    /**
     * 公寓Id
     */
    @Id
    @TableId
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Comment("公寓Id")
    private Long id;

    /**
     * 公寓名称
     */
    @Column(length = 128)
    @Comment("名字")
    private String name;

    /**
     * 公寓名称2
     */
    @Column(length = 128)
    @Comment("公寓名称2")
    private String subName;

    /**
     * 备注
     */
    @Column(length = 65535, columnDefinition = "TEXT")
    @Comment("备注")
    private String memo;

    /**
     * 经营区域
     */
    @Column()
    @Comment("经营区域")
    private String businessArea;

    /**
     * 地址
     */
    @Column()
    @Comment("地址")
    private String address;

    /**
     * 位置：地址
     */
    @Column()
    private String locationAddress;

    /**
     * 位置：名字
     */
    @Column()
    private String locationName;

    /**
     * 位置：纬度
     */
    @Column()
    private Double locationLatitude;

    /**
     * 位置：经度
     */
    @Column()
    private Double locationLongitude;

    /**
     * 地铁站
     */
    @Column()
    @Comment("地铁站")
    private String subwayStation;

    /**
     * 距离地铁站距离
     */
    @Column()
    @Comment("距离地铁站距离")
    private String subwayDistance;

    /**
     * 封面图片
     */
    @Column()
    @Comment("封面图片")
    private String coverImage;

    /**
     * 是否有电梯 0：无、1：有
     */
    @Column(columnDefinition = "tinyint default 0")
    @Comment("是否有电梯 0：无、1：有")
    private Byte hasElevator;

    /**
     * 押金月租期限 如：押一付一、押二付一
     */
    @Column(length = 64)
    @Comment("押金月租期限 如：押一付一、押二付一")
    private String rentalPeriod;

    /**
     * 租房租最小期限（单位：月）
     */
    @Comment("租房租最小期限（单位：月）")
    private Integer rentalMinimumDeadline;

    /**
     * 房间的总数量
     */
    @Comment("房间的总数量")
    private Integer roomCount;

    /**
     * 房间的类型数量
     */
    @Comment("房间的类型数量")
    private Integer roomTypeCount;

    /**
     * 审核状态 0：待发布、1：已发布、2：审核通过、3：审核不通过
     */
    @Comment("审核状态 0：待发布、1：已发布、2：审核通过、3：审核不通过")
    @Column(columnDefinition = "tinyint default 0")
    private Byte auditStatus;

    /**
     * 审核备注消息
     */
    @Column()
    @Comment("审核备注消息")
    private String auditMsg;

    /**
     * 序号
     */
    @Column()
    @Comment("序号")
    private Integer serialNumber;

    /**
     * 删除标志 0:未删除，==id:已删除
     */
    @Comment("删除标志 0:未删除，==id:已删除")
    @Column(nullable = false, columnDefinition = "BIGINT DEFAULT 0")
    private Long del;
}
